The encryption and decryption of information has long been an important tool for preventing unauthorized and undesired access to secret information, whether this information is stored in a computer, on a computer-readable storage medium, or transmitted between two parties over some communication link. With the evolution of computers and telecommunications technology, the quantity of information created and exchanged on a day to day basis is ever increasing, and ever more accessible. The need to prevent unwanted access to, and possible tampering with, this information in a speedy manner that ensures high security is therefore greater than ever before.
Encryption and decryption schemes typically rely on the use of an algorithm in combination with a data sequence or so-called cipher key. Conventionally, symmetric algorithms, wherein the sender and receiver (or creator and reader) of information share the same secret key, are most common. These schemes generally fall into one of two classes, namely, stream ciphers and block ciphers. An example of the latter scheme is the Data Encryption Standard (DES) described in U.S. Pat. No. 3,962,539. In such a scheme, the algorithm is time-invariant. In other words, two different plaintext messages encrypted with the same key undergo an identical series of computational steps. Depending on the algorithm, a change of key may alter the computation only slightly. Since no algorithm and key combination is truly safe (e.g., a cryptanalyst attempting to decrypt a message armed with a powerful computer is limited only by the time required to try all possible permutations) and the algorithm of known schemes is essentially invariant, the security of an existing system often relies on the frequent, often daily, change of keys.
Various schemes have been proposed to alleviate the disadvantages of prior art arrangements by increasing the complexity of any given algorithm. An example is the scheme described in U.S. Pat. No. 5,742,686 to Finley. This reference describes a device and method for dynamic encryption wherein different encryption and decryption programs are selected and executed optionally repetitively on the basis of a stored data set, which serves as the cipher key. While this prior art scheme allows the creation of custom encryption and decryption codes on a per user basis, the encryption algorithm used by each user is invariant, and the complexity of this algorithm depends directly on the strength and number of encryption and decryption codes utilized.
In U.S. Pat. No. 5,365,589 to Gutowitz, a scheme for encryption, decryption and authentication is described that utilizes dynamic systems, that is, systems comprising a set of states, and a rule for mapping each state forward in time to other states. The dynamic systems employed are cellular automata. A collection of cellular automata are used as secret keys for the system. Initially a subset of this collection is selected for encryption, and the message to be encrypted is encoded into the current states. The selected keys are applied over a predetermined number of cycles and the resulting current states constitute the ciphertext. While this scheme is based on cellular automata it may not be considered truly dynamic because the number of iterations of the rules of the current key or keys is a fixed quantity determined in advance. The complexity is dependent on the number of keys or rules applied in any current encryption, and while it is possible to apply several rules in any single encryption, this is not always practicable. Furthermore, the inclusion of some reversible dynamical systems as current keys may introduce a weakness in the system.